import { microApps, MicroAppConfig } from '../microApps.config'

/**
 * 判断是否为微应用路径
 * @param path 路径
 * @returns 是否为微应用路径
 */
export function isMicroAppPath(path: string): boolean {
  return microApps.some(app => path.startsWith(app.activeRule))
}

/**
 * 获取微应用配置
 * @param path 路径
 * @returns 微应用配置或null
 */
export function getMicroApp(path: string): MicroAppConfig | null {
  return microApps.find(app => path.startsWith(app.activeRule)) || null
}

/**
 * 获取微应用名称
 * @param path 路径
 * @returns 微应用名称或null
 */
export function getMicroAppName(path: string): string | null {
  const app = getMicroApp(path)
  return app ? app.name : null
}

/**
 * 获取微应用标题
 * @param path 路径
 * @returns 微应用标题或默认值
 */
export function getMicroAppTitle(path: string): string {
  const app = getMicroApp(path)
  return app ? app.title : '未知应用'
}

/**
 * 获取微应用tab后缀（如有）
 * @param path 路径
 * @returns 后缀字符串
 */
export function getMicroAppTabSuffix(path: string): string {
  const app = getMicroApp(path)
  // 兼容tabSuffix字段可选
  return app && 'tabSuffix' in app ? (app as any).tabSuffix || '' : ''
}

/**
 * 检查用户是否有权限访问微应用
 * @param path 路径
 * @param userRoles 用户角色列表
 * @returns 是否有权限访问
 */
export function canAccessMicroApp(path: string, userRoles: string[]): boolean {
  const app = getMicroApp(path)
  
  // 如果应用不存在或没有设置权限要求，则允许访问
  if (!app || !app.requiredRoles || app.requiredRoles.length === 0) {
    return true
  }
  
  // 检查用户是否有所需角色
  return userRoles.some(role => app.requiredRoles?.includes(role))
} 